Seiring dengan perkembangan teknologi terutama dalam hal komunikasi, pengolahan sinyal suara menjadi bagian penting dalam terciptanya kecanggihan dunia informasi saat ini. Semakin pentingnya kebutuhan akan informasi mendorong berbagai penelitian terkait khususnya pengolahan sinyal digital. Salah satunya adalah pengenalan suara. Sebuah sinyal suara mengandung entitas yang mengandung informasi. Namun, terkadang sinyal suara tersebut rusak atau terganggu oleh noise. Oleh karena itu diperlukan proses filter sinyal suara. Filter sinyal suara merupakan proses yang penghapusan noise pada sinyal suara yang rusak. Ada banyak aplikasi filter di bidang Telekomunikasi, Digital Signal Processing, Image Processing dan Wireless komunikasi. Di bidang Digital Signal Processing, fungsi utama dari filter adalah untuk menghilangkan komponen yang tidak diinginkan dari sinyal noise. Noise adalah suatu sinyal gangguan yang bersifat akustik (suara), elektris, maupun elektronis yang hadir dalam suatu sistem dalam bentuk gangguan yang bukan merupakan sinyal yang diinginkan. Gangguan yang diakibatkan oleh noise dapat mengubah sinyal informasi, yang menyebabkan gelombang sinus mempunyai sinyal noise yang kecil bergabung didalamnya. Sehingga penerima tidak dapat membedakan suatu sinyal berupa informasi yang sebenarnya dari noise yang ditambahkan.
Transformasi Fourier adalah suatu model transformasi yang memindahkan domain spasial atau domain waktu menjadi domain frekuensi. Transformasi Fourier merupakan suatu proses yang banyak digunakan untuk memindahkan domain dari suatu fungsi atau obyek ke dalam domain frekuens. Di dalam pengolahan sinyal, transformasi fourier digunakan untuk mengubah domain spasial menjadi domain frekuensi. Analisa-analisa dalam domain frekuensi banyak digunakan seperti filtering. Dengan menggunakan transformasi fourier, sinyal dapat dilihat sebagai suatu obyek dalam domain frekuensi.
Filter adalah sebuah sistem yang bertujuan untuk meningkatkan kualitas sinyal dengan mengubah karakteristiknya. Karakteristik yang dimaksud bisa saja dalam bentuk gelombang, fasa, frekuensi dan amplitudo dari sinyal. Selain itu filter juga berfungsi untuk menghilangkan noise yang ada pada sinyal, memisahkan hasil kombinasi dari dua atau lebih sinyal dan juga memperoleh informasi yang terdapat pada sinyal. Dalam proses komunikasi, noise dapat menjadi faktor pengganggu dalam hasil penyampaian informasi. Begitupun ketika diimplementasikan ke dalam pengolahan sistem pengenalan suara. Data yang digunakan sebaiknya melalui filter noise terlebih dahulu. Adapun berdasarkan respon frekuensinya, filter dibagi menjadi 3 yaitu LPF (low pass filter), HPF (high pass filter), BPF (band pass filter), BSF (band stop filter).
High Pass Filter atau biasanya disingkat dengan HPF adalah Filter atau penyaring frekuensi yang dapat melewatkan sinyal frekuensi tinggi dan menghambat atau memblokir sinyal frekuensi rendah. Dengan kata lain, sinyal Frekuensi tinggi akan lebih mudah melewati High Pass Filter (HPF) sedangkan sinyal frekuensi rendah akan dihambat atau dipersulit untuk melewatinya. HPF yang ideal adalah HPF yang sama sekali tidak melewatkan sinyal dengan frekuensi dibawah frekuensi cut-off. Pada dasarnya, High Pass Filter (HPF) adalah kebalikan dari Low Pass Filter (LPF).
Low Pass Filter atau sering disingkat dengan LPF adalah Filter atau Penyaring yang melewatkan sinyal Frekuensi rendah dan menghambat atau memblokir sinyal Frekuensi tinggi. Dengan kata lain, LPF akan menyaring sinyal frekuensi tinggi dan meneruskan sinyal frekuensi rendah yang diinginkannya.
Band Pass filter (BPF) merupakan rangkaian yang melewatkan frekuensi pada daerah tertentu di antara frekuensi cut-off pertama dan frekuensi cut-off kedua dan meredam frekuensi di luar daerah tersebut. Selain itu Band Pass filter dirancang untuk melewatkan frekuensi dalam batasan tertentu dan menolak frekuensi lain diluar frekuensi yang dikehendaki. Dan Band Pass filter merupakan gabungan antara highpass dan low pass filter. Filter band pass akan meneruskan sinyal-sinyal dengan frekuensi antara (median frequency) dan menahan frekuensi di bawah dan di atas median tersebut. Band-pass filter akan melewatkan sinyal dengan frekuensi-frekuensi dalam range tertentu dan meredam sinyal dengan frekuensi-frekuensi yang lainnya.
Perkembangan teknologi yang semakin pesat berbanding lurus dengan pengaruhnya dalam berbagai aspek kehidupan. Salah satunya penggunaan pengolahan sinyal digital terhadap sinyal suara. Dalam sistem komunikasi tidak seluruh sinyal yang dikirim akan diterima dengan baik seluruhnya oleh penerima. Adanya gangguan seperti noise, mengakibatkan sinyal suara yang diterima mengalami kecacatan atau bahkan menghilangkan informasi yang dibawa. Oleh karena itu diperlukan pengolahan sinyal suara untuk mereduksi noise pada suara.
berdasarkan permasalahn diatas Hal yang dilakukan pada project kapita selekta ini adalah Melakukan pemprosesan terhadap suara hasil rekaman berupa suara anak kucing yang direkam dengan menggunakan smartphone, kemudian dianalisis dengan menggunakan FFT. Lalu melakukan redaman terhadap noise dengan filter yang ada di suara hasil rekaman yang selanjutnya dilakukan analisis terhadap filter yang cocok digunakan untuk suara.
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile
from scipy.io.wavfile import write
from IPython.display import Audio
from scipy.fft import rfft, rfftfreq
import librosa
import librosa.display
import scipy.signal
%matplotlib inline
from pylab import rcParams
rcParams['figure.figsize'] = 14, 6
def grafik (t,signal,h):
plt.figure(figsize=(15,9))
plt.rcParams.update({'font.size': 15})
plt.tick_params(colors='black', which='both')
plt.plot(t,signal)
#plt.xlim(0,0.01)
plt.xlabel ('Time', fontsize = 25, color = 'black')
plt.ylabel ('Amplitude', fontsize = 25, color = 'black')
plt.title(f' {h}',fontsize = 25, color = 'black')
plt.grid(True)
plt.show()
def grafik_FFT(t,signal,h):
plt.figure(figsize=(10,5))
plt.rcParams.update({'font.size': 15})
plt.tick_params(colors='black', which='both')
plt.plot(t,signal)
#plt.xlim(3500,4000)
plt.xlabel ('Frekuensi', fontsize = 25, color = 'black')
plt.title(f' {h}',fontsize = 25, color = 'black')
plt.grid(True)
plt.show()
def grafik_hasil(y,yf,t):
plt.figure(figsize=(15,9))
plt.rcParams.update({'font.size': 15})
plt.tick_params(colors='black', which='both')
librosa.display.waveshow(y,sr=sampling, x_axis='time');
librosa.display.waveshow(yf,sr=sampling, x_axis='time');
plt.xlabel('Time', fontsize = 25, color = 'black')
plt.ylabel('Amplitude', fontsize = 25, color = 'black')
plt.title(f'{t}', fontsize = 25, color = 'black')
plt.grid(True)
plt.show()
Data Audio berisi suara kucing yang direkam menggunakan handphone. Karena direkam menggunakan handphone, terdapat noise pada suara kucing tersebut.
audio_data, sampling = librosa.load('kucing.wav', sr=None)
print('Sampling =', sampling)
print('Durasi Audio = ', len(audio_data)/sampling)
Audio(data=audio_data,rate=sampling)
Sampling = 48000 Durasi Audio = 7.637333333333333
sampling = 48000
duration = 7.637333333333333
Amplitudo = 1.0/sampling
waktu = np.arange(0,duration,Amplitudo)
grafik(waktu,audio_data,'Data Audio')
n = audio_data.size
yf = rfft(audio_data)
xf = rfftfreq(n, 1/sampling)
grafik_FFT(xf/2,np.abs(yf),'FFT Data Audio')
Bedasarkan grafik diatas dapat dilihat Frekuensi yang paling sering muncul ada di sekitar 1500 sehingga dapat dikatakan bahwa suara termasuk kedalam frekuensi tinggi
Filter Highpass adalah filter yang hanya melewatkan frekuensi diatas frekuensi cut-off (fc). Dibawah frekuensi tersebut sinyal akan diredam. Dari audio yang dibuat, dilakukan filter menggunakan algoritma High Pass Filter.
from scipy import signal
import random
def f_high(y,sr):
b,a = signal.butter(5, 2000/(sr/2), btype='highpass')
yf = signal.lfilter(b,a,y)
return b,a,yf
bh,ah,yf1 = f_high(audio_data, sampling)
grafik_hasil(audio_data,yf1,'Audio Hasil HPF')
display(Audio(yf1,rate=sampling))
w, h = signal.freqz(bh, ah, worN=8000)
plt.plot(0.5*sampling*w/np.pi, np.abs(h), 'b')
plt.plot(2000, 0.5*np.sqrt(2), 'ko')
plt.axvline(2000, color='k')
plt.xlim(1000, 3000)
plt.title("Highpass Filter Frequency Response")
plt.xlabel('Frequency [Hz]')
plt.grid()
n = yf1.size
yfh = rfft(yf1)
xfh = rfftfreq(n, 1/sampling)
grafik_FFT(xfh/2,np.abs(yfh),'FFT Data Audio HPF')
Filter Lowpass filter yang hanya melewatkan frekuensi yang lebih rendah dari frekuensi cut-off (fc). Diatas frekuensi tersebut sinyal akan diredam. Dari audio yang dibuat, dilakukan filter menggunakan algoritma Low Pass Filter.
from scipy import signal
import random
def f_low(y,sr):
b,a = signal.butter(5, 10000/(sr/2), btype='lowpass')
yf = signal.lfilter(b,a,y)
return b,a,yf
bl,al,yf2 = f_low(audio_data, sampling)
grafik_hasil(audio_data,yf2,'Audio Hasil LPF')
display(Audio(yf2,rate=sampling))
wl, hl = signal.freqz(bl, al, worN=8000)
plt.plot(0.5*sampling*wl/np.pi, np.abs(hl), 'b')
plt.plot(10000, 0.5*np.sqrt(2), 'ko')
plt.axvline(10000, color='k')
plt.xlim(8000, 12000)
plt.title("Lowpass Filter Frequency Response")
plt.xlabel('Frequency [Hz]')
plt.grid()
n = yf2.size
yfl = rfft(yf2)
xfl = rfftfreq(n, 1/sampling)
grafik_FFT(xfl/2,np.abs(yfl),'FFT Data Audio LPF')
Bandpass filter merupakan filter yang dapat melewatkan rentang frekuensi tertentu diantara frekuensi cut-off pertama dan frekuensi cut-off kedua. Diluar frekuensi tersebut sinyal akan diredam. Band Pass Filter merupakan penggabungan dari lowpass filter dan high pass filter. Daerah passband dibatasi oleh dua frekuensi tepi. Frekuensi tepi rendah menunujukkan batas frekuensi rendah dari suatu high pass filter dan frekuensi tepi yang sangat tinggi menunjukkan batas frekuensi tinggi dari suatu low pass filter. Bandpass filter menolak sinyal yang tidak diinginkan dan meningkatkan sistem kinerja. Dari audio yang dibuat, dilakukan filter menggunakan algoritma High Pass Filter.
from scipy import signal
import random
def bandpass_filter(y, sr):
b, a = signal.butter(5, [1000/(sr/2), 15000/(sr/2)], btype='band')
yf = signal.lfilter(b, a, y)
return b,a,yf
bb,ab,yf3 = bandpass_filter(audio_data, sampling)
grafik_hasil(audio_data,yf3,'Audio Hasil BPF')
display(Audio(yf3,rate=sampling))
wb, hb = signal.freqz(bb, ab, worN=8000)
plt.plot(0.5*sampling*wb/np.pi, np.abs(hb), 'b')
plt.plot(1000, 0.5*np.sqrt(2), 'ko')
plt.plot(15000, 0.5*np.sqrt(2), 'ko')
plt.axvline(1000, color='k')
plt.axvline(15000, color='k')
plt.xlim(0, 16000)
plt.title("Bandpass Filter Frequency Response")
plt.xlabel('Frequency [Hz]')
plt.grid()
n = yf3.size
yfb = rfft(yf3)
xfb = rfftfreq(n, 1/sampling)
grafik_FFT(xfb/2,np.abs(yfb),'FFT Data Audio LPF')
display(Audio(audio_data,rate=sampling))
grafik(waktu,audio_data,'Data Audio')
n = audio_data.size
yf = rfft(audio_data)
xf = rfftfreq(n, 1/sampling)
grafik_FFT(xf/2,np.abs(yf),'FFT Data Audio')
print('Pesah Suara Hasil Filter :')
display(Audio(yf1,rate=sampling))
Pesah Suara Hasil Filter :
grafik_hasil(audio_data,yf1,'Audio Hasil HPF')
plt.plot(0.5*sampling*w/np.pi, np.abs(h), 'b')
plt.plot(2000, 0.5*np.sqrt(2), 'ko')
plt.axvline(2000, color='k')
plt.xlim(1000, 3000)
plt.title("Highpass Filter Frequency Response")
plt.xlabel('Frequency [Hz]')
plt.grid()
n = yf1.size
yfh = rfft(yf1)
xfh = rfftfreq(n, 1/sampling)
grafik_FFT(xfh/2,np.abs(yfh),'FFT Data Audio HPF')
Hasil high pass filter dapat dilihat dari plotting FFT yang dihasilkan, suara yang ditimbulkan meningkat pada frekuensi tinggi dan pada frekuensi rendah cenderung menurun hal tersebut menyebabkan suara noise teredam dan suara anak kucing semakin meninggi. hal tersebut terjadi karena pada HPF meloloskan suara dengan frekuensi tinggi dan meredam suara frekuensi rendah
print('Pesah Suara Hasil Filter :')
display(Audio(yf2,rate=sampling))
Pesah Suara Hasil Filter :
grafik_hasil(audio_data,yf2,'Audio Hasil LPF')
plt.plot(0.5*sampling*wl/np.pi, np.abs(hl), 'b')
plt.plot(10000, 0.5*np.sqrt(2), 'ko')
plt.axvline(10000, color='k')
plt.xlim(8000, 12000)
plt.title("Lowpass Filter Frequency Response")
plt.xlabel('Frequency [Hz]')
plt.grid()
n = yf2.size
yfl = rfft(yf2)
xfl = rfftfreq(n, 1/sampling)
grafik_FFT(xfl/2,np.abs(yfl),'FFT Data Audio LPF')
sedangkan pada penggunaan filter LPF dapat terlihat tidak adanya perubahan pada hasil plotting fft yang menggambarkan bahwa filter yang digunakan tidak pas sehingga tidak adanya perubahan dari suara aslinya karena pada LPH sinyal yang diloloskan adalah sinyal yang berfrekuensi tinggi hal tersebut tidak pas karena frekuensi pada suara cenderung tinggi.
print('Pesah Suara Hasil Filter :')
display(Audio(yf3,rate=sampling))
Pesah Suara Hasil Filter :
grafik_hasil(audio_data,yf3,'Audio Hasil BPF')
plt.plot(0.5*sampling*wb/np.pi, np.abs(hb), 'b')
plt.plot(1000, 0.5*np.sqrt(2), 'ko')
plt.plot(15000, 0.5*np.sqrt(2), 'ko')
plt.axvline(1000, color='k')
plt.axvline(15000, color='k')
plt.xlim(0, 20000)
plt.title("Bandpass Filter Frequency Response")
plt.xlabel('Frequency [Hz]')
plt.grid()
n = yf3.size
yfb = rfft(yf3)
xfb = rfftfreq(n, 1/sampling)
grafik_FFT(xfb/2,np.abs(yfb),'FFT Data Audio BPF')
Hasil filter Band Pass Filter dapat dilihat dari plotting FFT yang dihasilkan, suara yang ditimbulkan meningkat pada frekuensi tinggi dan pada frekuensi rendah cenderung menurun hal tersebut menyebabkan suara noise teredam dan suara anak kucing semakin meninggi sesuai dengan hasil High pass filter. hal tersebut dapat terjadi karena BPF meredam sinyal frekuensi rendah dan tinggi
Pada project kali ini, dilakukan percobaan pembuatan filter untuk menghilangkan noise pada audio. Adapun data audio yang digunakan dibuat menggunakan suara hasil rekaman suara kucing dengan smartphone sehingga suara yang dihasilkan mendapatkan sedikit noise sehingga dilakukan filtering untuk meredam noise.
Data suara memiliki sampling rate dengan durasi yang memiliki kecenderungan frekuensi sekitar 1500 kemudia dilakukan Filtering dilakukan dengan filter High Pass Filter, Low Pas Filter dan Band Pass Filter. Penggunaan filter dilakukan untuk meredam suara noise berdasarkan percobaan didapatkan High Pass Filter dan Band Pass Filter dapat teredam sedangkan pada low pass filter tidak dapat teredam.
Hal tersebut dapat terjadi karena pada high pass filter merupakan filter yang melolokan nilai frekuensi tinggi dan diketahui bahwa frekuensi dari suara anak kucing tergolong tinggi. Kemudian pada band pass filter memiliki hasil yang hampir sama dengan high pass filter hal tersebut terjadi karena pada band pass filter melakukan redaman terhadap frekuensi rendah dan atas. Sedangkan, pada low pass filter tidak dapat menghasilkan perbedaan suara yang signifikan karena frekuensi yang dimiliki hampir memiliki kemiripan yang sama antara frekuensi suara yang diinginkan dengan noise
Proses perekaman suara merupakan hal yang sering dilakukan namun keterbatasan perangkat membuat suara kurang jernih karena adanya noise oleh karena itu dilakukan filtering terhadap suara agar hasil menjadi lebih baik
FFT dapat digunakan untuk melihat domain frekuensi yang muncul hal tersebut dapat digunakan untuk menyesuaikan filter yang akan digunakan.
High pass Filter, low pass filter dan band pass filter dapat digunakan sesuai dengan keadaan noise dari suara.